鱼C论坛

 找回密码
 立即注册
查看: 842|回复: 5

[已解决]第026讲:字典:当索引不好用时2 | 课后测试题及答案的问题

[复制链接]
发表于 2020-3-3 21:14:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xiangyuebj 于 2020-3-4 12:28 编辑
user_data = {}

def new_user():
    while True:
        name = input('请输入用户名:')
        if name in user_data:
            print('此用户名已经被使用,请重新输入:')
            continue
        else:
            passwd = input('请输入密码:')
            user_data[name] = passwd
            print('注册成功,赶紧试试登录吧^_^')
            print(user_data)

def old_user():
    while True:
        name = input('请输入用户名:')
        if name not in user_data:
            print('此用户名不存在,请重新输入:')
            continue
        else:
            break
    passwd = input('请输入密码:')
    pwd = user_data.get(name)

    if pwd == passwd:

        print('欢迎进入XXOO系统,请点右上角的X结束程序!')
    else:
        print('密码错误!')

def ShowMenu():
    prompt = '''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 推出程序:Q/q ---|
|--- 请输入指令代码:'''
    print(prompt)
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen = True

    if choice == 'q' or choice == 'Q':
        break
    if choice == 'n' or choice == 'N':
        new_user()
    if choice == 'e' or choice == 'E':
        old_user()


ShowMenu()

最后课后作业,我自己照着答案按照自己的想法思路修改过得代码  有些问题请教论坛鱼友

第一个问题:
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen = True

这段代码中chosen  是什么意思 没理解为什么要用chosen


第二个问题:
    if choice == 'q' or choice == 'Q':
        break
    if choice == 'n' or choice == 'N':
        new_user()
    if choice == 'e' or choice == 'E':
        old_user()

这段代码中 报错:SyntaxError: 'break' outside loop

百度查了有的说 IF 不能和break使用  
最佳答案
2020-3-4 11:48:56
本帖最后由 wuqramy 于 2020-3-4 11:51 编辑

问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:
user_data = {}

def new_user():
    while True:
        name = input('请输入用户名:')
        if name in user_data:
            print('此用户名已经被使用,请重新输入:')
            continue
        else:
            passwd = input('请输入密码:')
            user_data[name] = passwd
            print('注册成功,赶紧试试登录吧^_^')
            print(user_data)

def old_user():
    while True:
        name = input('请输入用户名:')
        if name not in user_data:
            print('此用户名不存在,请重新输入:')
            continue
        else:
            break
    passwd = input('请输入密码:')
    pwd = user_data.get(name)

    if pwd == passwd:

        print('欢迎进入XXOO系统,请点右上角的X结束程序!')
    else:
        print('密码错误!')

def ShowMenu():
    prompt = '''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 推出程序:Q/q ---|
|--- 请输入指令代码:'''
    print(prompt)
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen = True
            if choice == 'q' or choice == 'Q':
                break
            if choice == 'n' or choice == 'N':
                new_user()
            if choice == 'e' or choice == 'E':
                old_user()


ShowMenu()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-4 10:09:00 From FishC Mobile | 显示全部楼层
其中chosen用来判断用户是不是输入的有效的命令,无效的时候就保持为False让你继续输入,当输入有效命令时就变为True,此时退出输入循环,去判断输入的内容如果是有效命令就执行对应的函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 11:35:14 | 显示全部楼层
小小小菜菜菜 发表于 2020-3-4 10:09
其中chosen用来判断用户是不是输入的有效的命令,无效的时候就保持为False让你继续输入,当输入有效命令时 ...

第二个问题 为什么不能用break命令退出循环 你能看出来问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 11:48:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wuqramy 于 2020-3-4 11:51 编辑

问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:
user_data = {}

def new_user():
    while True:
        name = input('请输入用户名:')
        if name in user_data:
            print('此用户名已经被使用,请重新输入:')
            continue
        else:
            passwd = input('请输入密码:')
            user_data[name] = passwd
            print('注册成功,赶紧试试登录吧^_^')
            print(user_data)

def old_user():
    while True:
        name = input('请输入用户名:')
        if name not in user_data:
            print('此用户名不存在,请重新输入:')
            continue
        else:
            break
    passwd = input('请输入密码:')
    pwd = user_data.get(name)

    if pwd == passwd:

        print('欢迎进入XXOO系统,请点右上角的X结束程序!')
    else:
        print('密码错误!')

def ShowMenu():
    prompt = '''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 推出程序:Q/q ---|
|--- 请输入指令代码:'''
    print(prompt)
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen = True
            if choice == 'q' or choice == 'Q':
                break
            if choice == 'n' or choice == 'N':
                new_user()
            if choice == 'e' or choice == 'E':
                old_user()


ShowMenu()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 12:28:07 | 显示全部楼层
wuqramy 发表于 2020-3-4 11:48
问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:

明白了。。知道原因了 最后几行的代码跑到和while同一个缩进了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 12:29:18 | 显示全部楼层
xiangyuebj 发表于 2020-3-4 12:28
明白了。。知道原因了 最后几行的代码跑到和while同一个缩进了

以后可要仔细了^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-19 09:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表